配置选项

Chart.js 提供了一系列选项用来配置创建的图表。这些选项可以通过创建图表时传入一个 options 对象进行配置,否则创建图表的时候将使用官方的全局配置。

图表数据

为了描绘图表,需要传入一个包含所有必须数据的 data 对象,data 对象可以包含以下属性:

属性名 类型 描述
datasets Array[object] 包含每一组数据。查看后面各种类型图表详细文档选择合适的选项
labels Array[string] 设置轴线选项
xLabels Array[string] 设置水平轴选项
yLabels Array[string] 设置垂直轴选项

自定义选项创建图表

简单的给js构造器声明一个包含自定义配置信息的options对象即可创建自定义选项图表。如下示例创建了一个非响应的图表:

var chartInstance = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        responsive: false
    }
});

全局配置

为了遵循DRY规范,Chart.js 1.0 版本中提成了这个概念,允许并且推荐修改所有类型图表都适用的配置选项,而不是为每一个实例单独修改配置,或者给特殊的实例也使用默认配置。

Chart.js 正确地将 options 对象和默认类型和轴线配置进行合并,这样你可以将个人图表配置写的尽可能地明确并且能改变相匹配的全局配置。全局选项定义为Chart.defaults.global。各种类型的图表默认配置将在之后详细介绍。

以下示例将在创建图表时将所有没有自定义 hover mode 的配置统一定义为 'nearest':

Chart.defaults.global.hover.mode = 'nearest';

// Hover mode is set to nearest because it was not overridden here
var chartInstanceHoverModeNearest = new Chart(ctx, {
    type: 'line',
    data: data,
});

// This chart would have the hover mode that was passed in
var chartInstanceDifferentHoverMode = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        hover: {
            // Overrides the global setting
            mode: 'index'
        }
    }
})
全局字体设置

如下有四种全局设置方式可以改变图表的所有字体。这四种选项将在Chart.defaults.global中进行定义:

选项名 类型 默认值 描述
defaultFontColor Color '#666' 文字默认颜色
defaultFontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 文字默认字体
defaultFontSize Number 12 默认字号 单位px. 不适用于radialLinear scale point labels
defaultFontStyle String 'normal' 默认字体风格. 不适用于tooltip title, footer and chart title

通用图表配置

以下选项适用于所有图表。它们可以在全局配置中进行设置,也可以作为options传给图表构造器。

选项名 类型 默认值 描述
responsive Boolean true 自动调整图表大小
responsiveAnimationDuration Number 0 自动调整图表大小动作持续时间(毫秒)
maintainAspectRatio Boolean true 调整图表大小时保证长宽比不变
events Array[String] ["mousemove", "mouseout", "click", "touchstart", "touchmove", "touchend"] 图表监听事件
onClick Function null mouseupclick事件的回调动作
legendCallback Function function (chart) { } 接收图表配置生成图例,默认生成HTML字符串
onResize Function null 图表调整大小时触发

布局配置

布局配置选项通过options.layout命名空间进行传递。图表布局的全局选项在Chart.defaults.global.layout中定义:

选项名 类型 默认值 描述
padding Number or Object 0 定义图表的内边距。如果传进来Number,则默认top, bottom, left, right都为同一个值。如果传进来是一个对象,则keytop, bottom, left, right的值分别定义各个方向上的值

标题配置

标题配置选项通过options.title命名空间进行传递。标题配置的全局选项在Chart.defaults.global.title中定义:

选项名 类型 默认值 描述
display Boolean false 图表是否显示标题
position String 'top' 标题所在方位,可以设置为top, bottom, left, right
fullWidth Boolean true 宽度为canvas的百分百宽度
fontSize Number 12 标题字体大小
fontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 标题字体
fontColor Color "#666" 标题字体颜色
fontStyle String 'bold' 标题字体风格
padding Number 10 标题上下内边距
text String '' 标题内容
标题示例

以下示例将生成内容为"Custom Chart Title"的标题

var chartInstance = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        title: {
            display: true,
            text: 'Custom Chart Title'
        }
    }
})

图例配置

图例配置选项通过options.legend命名空间进行传递。图例配置的全局选项在Chart.defaults.global.legend中定义:

选项名 类型 默认值 描述
display Boolean true 是否显示图例
position String 'top' 图例所在方位,可以设置为top, bottom, left, right
fullWidth Boolean true 宽度为canvas的百分百宽度
onClick Function function(event, legendItem) {} 当图例标签注册了click事件时点击图例触发
onHover Function function(event, legendItem) {} 当图例标签注册了mousemove事件时滑过图例触发
labels Object - 参考下面图例标签配置
reverse Boolean false 逆序显示数据图例

图例标签配置

图例标签配置在上述图例配置中的labels选项中进行设置:

选项名 类型 默认值 描述
boxWidth Number 40 图例标签色块宽度
fontSize Number 12 图例字体大小
fontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 图例字体
fontColor Color "#666" 图例字体颜色
fontStyle String 'normal' 图例字体风格
padding Number 10 图例色块间的边距
generateLabels Function function(chart) { } 定义生成图例,默认为文字+色块,更多信息参考图例项样式
filter Function null 参考图例项样式
usePointStyle Boolean false 设置标签样式为文字大小的

图例项样式

在上述图例标签配置中labels.generateLabels选项中进行设置,必须实现以下接口:

{
    // 图例显示内容
    text: String,

    // 图例色块填充色
    fillStyle: Color,

    // 设置为true时图例上将显示删除线
    hidden: Boolean,

    // For box border. See https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap
    lineCap: String,

    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash
    lineDash: Array[Number],

    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
    lineDashOffset: Number,

    // For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
    lineJoin: String,

    // 容器边框宽度
    lineWidth: Number,

    // 容器删除色
    strokeStyle: Color

    // 图例块点状风格 (仅当`usePointStyle`设置为`true`时生效)
    pointStyle: String
}
示例

以下示例将设置图表的图例文字颜色为红色:

var chartInstance = new Chart(ctx, {
    type: 'bar',
    data: data,
    options: {
        legend: {
            display: true,
            labels: {
                fontColor: 'rgb(255, 99, 132)'
            }
        }
}
});

提示项配置

提示项配置选项通过options.tooltips命名空间进行传递。提示项配置的全局选项在Chart.defaults.global.tooltips中定义:

选项名 类型 默认值 描述
enabled Boolean true 是否显示提示
custom Function null 参考后文
mode String 'nearest' 提示项样式
intersect Boolean true 设置为true时将获得焦点的时候显示提示
position String 'average' 提示项显示区域 average, neares
itemSort Function undefined 提示项排序
filter Function undefined 提示项过滤器
backgroundColor Color 'rgba(0,0,0,0.8)' 提示项背景色
titleFontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 提示项标题字体
titleFontSize Number 12 提示项标题字体大小
titleFontStyle String "bold" 提示项标题字体风格
titleFontColor Color "#fff" 提示项标题字体颜色
titleSpacing Number 2 提示项标题字间距
titleMarginBottom Number 6 提示项标题下外边距
bodyFontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 提示项内容字体
bodyFontSize Number 12 提示项内容字体大小
bodyFontStyle String "normal" 提示项内容字体风格
bodyFontColor Color "#fff" 提示项内容字体颜色
bodySpacing Number 2 提示项内容字间距
footerFontFamily String "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 提示项页尾字体
footerFontSize Number 12 提示项页尾字体大小
footerFontStyle String "bold" 提示项页尾字体风格
footerFontColor Color "#fff" 提示项页尾字体颜色
footerSpacing Number 2 提示项页尾字间距
footerMarginTop Number 6 提示项页尾上外边距
xPadding Number 6 提示项左右边距
yPadding Number 6 提示项上下边距
caretSize Number 5 箭头符大小
cornerRadius Number 6 提示项边角弧度
multiKeyBackground Color "#fff" 多个提示项重叠时背景色
displayColors Boolean true 设置true时提示项显示色块
callbacks Object 查看以下回调部分
提示项回调

提示项标签配置由提示项配置中的callbacks选项声明,提示项配置为文本提供了以下几种方式的回调:

回调名 参数 描述
beforeTitle Array[tooltipItem], data 在标题前渲染的内容
title Array[tooltipItem], data 标题
afterTitle Array[tooltipItem], data 在标题之后渲染的内容
beforeBody Array[tooltipItem], data 在正文内容前渲染的内容
beforeLabel tooltipItem, data 在标签前渲染的内容
label tooltipItem, data 标签
labelColor tooltipItem, chartInstance 返回提示项的颜色对象,有borderColorbackgroundColor两个属性
afterLabel tooltipItem, data 在标签之后渲染的内容
afterBody Array[tooltipItem], data 在正文内容之后渲染的内容
beforeFooter Array[tooltipItem], data 在页尾前渲染的内容
footer Array[tooltipItem], data 页尾
afterFooter Array[tooltipItem], data 在页尾后渲染的内容
dataPoints Array[tooltipItem] 列出匹配点的信息
提示项接口

提示项配置实现了以下接口:

{
    // 提示项垂直方向的值
    xLabel: String,

    // 提示项水平方向的值
    yLabel: String,

    // 数据组序号
    datasetIndex: Number,

    // 数据在数据组中的序号
    index: Number,

    // 匹配点的x坐标
    x: Number,

    // 匹配点的y坐标
    y: Number,
}

悬停配置

悬停配置选项通过options.hover命名空间进行传递。悬停配置的全局选项在Chart.defaults.global.hover中定义:

选项名 类型 默认值 描述
mode String 'nearest' 元素出现在提示项中,更多配置见下一段Interaction Modes
intersect Boolean true 设置为true时 只有鼠标与元素交叉时才出发悬停事件
animationDuration Number 400 悬停变化延续时间 毫秒
onHover Function null 当触发悬停事件时执行的回调

交互模式

悬停配置和提示项配置中可以设置交互模式,以下几种模式可以配合intersect选项生效:

模式 表现形式
point 查找交互点的所有目标
nearest 查找交互点的最近目标
single (deprecated) nearest
label (deprecated) index 模式
index 查找相同序列的目标
x-axis (deprecated) index 同时 intersect = false
dataset 查找同一数据组中的目标
x 只根据x坐标查找目标
y 只根据y坐标查找目标

动画配置

以下动画选项可供配置,动画配置的全局选项在Chart.defaults.global.animation中定义:

选项名 类型 默认值 描述
duration Number 1000 动画时间 毫秒
easing String "easeOutQuart" 滑出形式 可用的形式有linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine, easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc, easeInElastic, easeOutElastic, easeInOutElastic, easeInBack, easeOutBack, easeInOutBack, easeInBounce, easeOutBounce, easeInOutBounce
onProgress Function none 动画持续时执行的回调
onComplete Function none 动画结束后的回调
动画回调

动画配置中的 onProgressonComplete回调动作可以同步外部图表的绘制,回调通过传对象实现以下接口,关于动画回调的例子见Github

{
    // 图表对象
    chartInstance,

    // 执行中动画的详细信息
    animationObject,
}
动画对象

传给动画回调的对象属于Chart.Animation类型,对象包含以下属性:

{
    // Current Animation frame number
    currentStep: Number,

    // Number of animation frames
    numSteps: Number,

    // Animation easing to use
    easing: String,

    // Function that renders the chart
    render: Function,

    // User callback
    onAnimationProgress: Function,

    // User callback
    onAnimationComplete: Function
}

元素配置

元素配置的全局选项在Chart.defaults.global.elements中进行配置。

选项可以设置四种不同的元素:arc, line, point, rectangle,一旦对元素进行配置将会在全局生效,除非另写更明确的配置进行覆盖。

弧形配置
选项名 类型 默认值 描述
backgroundColor Color 'rgba(0,0,0,0.1)' 弧形的默认填充颜色
borderColor Color '#fff' 弧形边框默认颜色
borderWidth Number 2 弧形边框默认宽度
曲线配置

曲线元素设置图表中的曲线样式,全局选项保存在 Chart.defaults.global.elements.line

选项名 类型 默认值 描述
tension Number 0.4 默认贝塞尔曲线张力,设置0时相当于没有贝塞尔张力
backgroundColor Color 'rgba(0,0,0,0.1)' 曲线默认填充色
borderWidth Number 3 曲线默认边框宽度
borderColor Color 'rgba(0,0,0,0.1)' 曲线默认边框颜色
borderCapStyle String 'butt' 详情查看MDN
borderDash Array [] 详情查看MDN
borderDashOffset Number 0.0 详情查看MDN
borderJoinStyle String 'miter' 详情查看MDN
capBezierPoints Boolean true 设置为true时,贝塞尔曲线折点位于图表内,否则无限制
fill Boolean or String true 设置为true时,默认设置填充点为zero,也可以设置成top, bottom,设置为false时不填充
stepped Boolean false 设置为true时图表将显示折线图,没有贝塞尔弧度

颜色

你可以使用一系列格式去设置颜色选项。可以使用hexadecimal, RGB 或者 HSL notations,如果没有使用正确的格式,图表将默认使用全局颜色选项。全局颜色选项设置在Chart.defaults.global.defaultColor, 默认值为rgba(0, 0, 0, 0.1)

同样,你也可以传一个CanvasGradient对象,使用传递对象可以实现更多的效果。

图案

选项会给图表传一个CanvasPattern对象,例如你想用一张图片填充数据,可以按以下方法实现:

var img = new Image();
img.src = 'https://example.com/my_image.png';
img.onload = function() {
    var ctx = document.getElementById('canvas').getContext('2d');
    var fillPattern = ctx.createPattern(img, 'repeat');

    var chart = new Chart(ctx, {
        data: {
            labels: ['Item 1', 'Item 2', 'Item 3'],
            datasets: [{
                data: [10, 20, 30],
                backgroundColor: fillPattern
            }]
        }
    })
}

使用图案填充可以帮助有视力障碍的人更方便的查看你的图表。

使用Patternnomaly库可以生成数据填充图。

var chartData = {
    datasets: [{
        data: [45, 25, 20, 10],
        backgroundColor: [
            pattern.draw('square', '#ff6384'),
            pattern.draw('circle', '#36a2eb'),
            pattern.draw('diamond', '#cc65fe'),
            pattern.draw('triangle', '#ffce56'),
        ]
    }],
    labels: ['Red', 'Blue', 'Purple', 'Yellow']
};

混合图表类型

单独声明数据的类型时,可以生成混合图表,如下:

var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Item 1', 'Item 2', 'Item 3'],
        datasets: [
            {
                type: 'bar',
                label: 'Bar Component',
                data: [10, 20, 30],
            },
            {
                type: 'line',
                label: 'Line Component',
                data: [30, 20, 10],
            }
        ]
    }
});

results matching ""

    No results matching ""